import { createStore } from 'vuex'



// state: () => ({
//   msg: 'user  vuex '
// })
const userStore = createStore({
  state: () => {
    return {
      msg: 'user  vuex ',
      count: 0,
      arr: [1, 2, 3, 20, 40, 80, 99, 100]
    }
  },


  actions: {

    //  异步执行  addCount 方法
    asyncAddCount (context) {
      console.log(context)
      alert('mapActions 方法')

      setTimeout(() => {
        context.commit('addCount')
      }, 2000)
    }
  },

  // asyncAddCountPromise (context) {
  //   new Promise((resolve, reject) => {

  //     // axios.get()
  //     setTimeout(() => {
  //       resolve('成功')

  //       context.addCount()
  //     }, 2000)
  //   })

  // },



  mutations: {
    addCount (state) {
      state.count++
    }

  },

  getters: {

    // getEven (state) {
    //   return state.arr.filter((item) => item % 2 == 0)




    // },
    // 写法二
    // getEven (state) {
    //   return state.arr.reduce((pre, item) => {
    //     if (item % 2 == 0) {   // 偶数
    //       return pre.concat(item)
    //     } else { // 奇数
    //       return pre
    //     }
    //   }, [])
    // }


    // 简写 
    getEven: (state) => state.arr.reduce((pre, item) => item % 2 == 0 ? pre.concat(item) : pre, [])


  }







})

export default userStore